#include <algorithm>
#include <iostream>
#include <istream>
#include <vector>

const int inf=1e9+7;
int n,m;
std::vector<int> a,dp,s;

int main(){
    std::iostream::sync_with_stdio(false);
    std::cin.tie(nullptr);

    std::cin>>n>>m;
    a.resize(n+1);
    dp.resize(n+1,inf);
    s.resize(m+1);

    for(int i=1;i<=n;i++)std::cin>>a[i];
    dp[0]=0;
    for(int i=1;i<=n;i++){
        int size=0;
        for(int j=i;j>=1&&size*size<=n;j--){
            if(s[a[j]]!=i){
                size++;
                s[a[j]]=i;
            }
            dp[i]=std::min(dp[i],dp[j-1]+size*size);
        }
    }
    std::cout<<dp[n]<<"\n";
}